package controller;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import model.Consulta;

public class ProcessadorPerguntas extends Processador {
	
	private List<Consulta> consultas = new ArrayList<Consulta>();
	
	protected void processaArquivo(File arquivo) {
		
		Consulta consulta = new Consulta();
		String[] split;
		
		String estringao = Utils.getFileAsString(arquivo);
		split = estringao.split("\\nQU ");
		Integer numero = Integer.parseInt(split[0].split(" ")[1]);
		consulta.setNumero(numero);
		
		String restoNome = split[1];
		split = restoNome.split("\\nNR ");
		String questao = split[0].replace("\\n", " ");
		consulta.setQuestao(questao);
		
		String restoDocumentos = split[1];
		split = restoDocumentos.split("\\nRD ");
		Integer qtDocs = Integer.parseInt(split[0]);
		
		String restoRelevancias = split[1];
		split = restoRelevancias.trim().split("[ \\n]+");
		
		if (qtDocs.equals(split.length / 2)) {
			for (int i = 0; i < qtDocs; i++) {
				int pos = i*2;
				int nDoc = Integer.valueOf(split[pos]);
				for (int j = 0; j < 4; j++) {
					if (split[pos + 1].charAt(j) != '0') {
						consulta.addRelevante(nDoc, j);
					}
				}
			}
		} else {
			throw new RuntimeException("Arquivo pergunta mal formatado");
		}
		
		consultas.add(consulta);
		
	}

	public static void main(String[] args) {
		
		ProcessadorPerguntas proc = new ProcessadorPerguntas();
		
		File documentos = new File("documentos/cfc/pergTrab");
		
		// processando perguntas
		long t = System.currentTimeMillis();
		proc.processaDiretorio(documentos);
		t = System.currentTimeMillis() - t;
		System.out.println("Tempo para processar as queries: " + (t/(1000)) + "s.");
		
		// serializando perguntas
		long t3 = System.currentTimeMillis();   
		serializa(proc.consultas, "search_engine.queries");
		t3 = System.currentTimeMillis() - t3;
		System.out.println("Tempo para serializar as queries: " + (t3/(1000)) + "s.");
		
	}
	
}
